Changeset 445 for Daodan


Ignore:
Timestamp:
Jul 19, 2009, 1:03:44 PM (15 years ago)
Author:
rossy
Message:

fixed sprintf

Location:
Daodan
Files:
1 added
1 deleted
3 edited

Legend:

Unmodified
Added
Removed
  • Daodan/src/Daodan.c

    r439 r445  
    169169}
    170170
    171 enum {s_unknown, s_options, s_patch, s_language} ini_section;
     171enum {s_unknown, s_options, s_patch, s_bsl, s_language} ini_section;
    172172
    173173bool DDrIniCallback(char* section, bool newsection, char* name, char* value)
     
    179179                else if (!stricmp(section, "patch"))
    180180                        ini_section = s_patch;
     181                else if (!stricmp(section, "bsl"))
     182                        ini_section = s_bsl;
    181183                else if (!stricmp(section, "language"))
    182184                        ini_section = s_language;
     
    241243                        else
    242244                                DDrStartupMessage("unrecognised patch \"%s\"", name);
     245                        break;
     246                case s_bsl:
     247                       
    243248                        break;
    244249                case s_language:
  • Daodan/src/Daodan_BSL.c

    r444 r445  
    66#include "Daodan_Utility.h"
    77#include "Daodan_Console.h"
    8 #include "BFW_ScriptingLanguage.h"
     8#include "BFW_ScriptLang.h"
    99#include "Oni.h"
    1010#include "Oni_Character.h"
     
    1313uint16_t ONICALL bsl_int32mul(sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], void* dontuse1, void* dontuse2, sl_arg* ret)
    1414{
    15         if (numargs < 2)
    16                 return 1;
    1715        ret->value_int32 = args[0].value_int32 * args[1].value_int32;
    1816        ret->type = sl_int32;
     
    2220uint16_t ONICALL bsl_mul(sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], void* dontuse1, void* dontuse2, sl_arg* ret)
    2321{
    24         if (numargs < 2)
    25                 return 1;
    26        
    2722        double val1;
    2823        double val2;
     
    4540uint16_t ONICALL bsl_int32div(sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], void* dontuse1, void* dontuse2, sl_arg* ret)
    4641{
    47         if (numargs < 2)
    48                 return 1;
    4942        ret->value_int32 = args[0].value_int32 / args[1].value_int32;
    5043        ret->type = sl_int32;
     
    5447uint16_t ONICALL bsl_div(sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], void* dontuse1, void* dontuse2, sl_arg* ret)
    5548{
    56         if (numargs < 2)
    57                 return 1;
    58        
    5949        double val1;
    6050        double val2;
     
    7767uint16_t ONICALL bsl_int32rand(sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], void* dontuse1, void* dontuse2, sl_arg* ret)
    7868{
    79         if (numargs < 2)
    80                 return 1;
    81        
    8269        int32_t start = 0;
    8370        int32_t end = 0;
     
    127114        if (numargs < 2)
    128115                return 1;
    129 
     116       
    130117        char output[255];
    131118        int i;
     
    141128uint16_t ONICALL bsl_sprintf(sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], void* dontuse1, void* dontuse2, sl_arg* ret)
    142129{
     130        DDrConsole_PrintF("%d", numargs);
     131       
     132        if (numargs < 1 || args[0].type != sl_str32)
     133        {
     134                DDrConsole_PrintF("Func \"%s\", File \"%s\", Line %d: semantic error, \"%s\": parameter list does not match: format:string arg1 arg2 ...", callinfo->name, callinfo->calllocation, callinfo->linenumber, callinfo->name);
     135                return 0;
     136        }
     137       
     138        if (!args[0].value_str32)
     139                args[0].value_str32 = "";
     140       
    143141        int ffi_ret;
    144142        char* str = NULL;
     
    174172       
    175173        if (ffi_prep_cif(&cif, FFI_DEFAULT_ABI, i, &ffi_type_sint32, ffi_args) != FFI_OK)
    176                 MessageBox(0, "", "", 0);
     174                return 1;
    177175        ffi_call(&cif, (void*)snprintf, (void*)&ffi_ret, values);
    178176        str = malloc(ffi_ret + 1);
     
    198196        SLrScript_Command_Register_ReturnType("chr_getdamage","Gets the amount of damage a character has caused", "[chrindex:int]", sl_int32, bsl_getdamage);
    199197       
    200         SLrScript_Command_Register_ReturnType("sprintf", "C-style sprintf.", "str1:format", sl_str32, bsl_sprintf);
     198        SLrScript_Command_Register_ReturnType("sprintf", "C-style sprintf.", "format:string arg1 arg2 ...", sl_str32, bsl_sprintf);
    201199}
Note: See TracChangeset for help on using the changeset viewer.