ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/Daodan/src/Daodan_BSL.c
(Generate patch)

Comparing Daodan/src/Daodan_BSL.c (file contents):
Revision 440 by rossy, Fri Jul 17 09:44:17 2009 UTC vs.
Revision 441 by gumby, Sat Jul 18 00:55:15 2009 UTC

# Line 2 | Line 2
2  
3   #include "Daodan_BSL.h"
4   #include "BFW_ScriptingLanguage.h"
5 <
5 > #include <stdio.h>
6 > #include "Oni.h"
7 > #include "Oni_Character.h"
8   #include "dSFMT\dSFMT.h"
9  
10   uint16_t ONICALL bsl_int32mul(void* dontuse0, uint32_t numargs, sl_arg args[], void* dontuse1, void* dontuse2, sl_arg* ret)
# Line 14 | Line 16 | uint16_t ONICALL bsl_int32mul(void* dont
16          return 0;
17   }
18  
19 + uint16_t ONICALL bsl_getkills(void* dontuse0, uint32_t numargs, sl_arg args[], void* dontuse1, void* dontuse2, sl_arg* ret)
20 + {
21 +
22 +        //void* GS = (short int**)(ONgGameState);
23 +
24 +        //if (numargs < 2)
25 +        //      return 1;
26 +        
27 +        //fix the AC struct :(
28 +        //ret->value_int32 = ((ActiveCharacter *)(ONgGameState+0xB6268))->NumberOfKills;
29 +        //short int index =;
30 +        //char temp_bitset[2];
31 +        int index2;
32 +        if (numargs == 0) index2 = 0;
33 +        else index2 = args[0].value_int32;
34 +        char* active_index = ONgGameState + index2 * 0x16A0 +  0x1260 + 2;
35 +        //index = *(*()+ 0x1260 +2);
36 +        //ret->value_int32 = *((signed int*)(ONgGameState)) +0xB6268+(*(((signed int*)(ONgGameState)) + 0xAC)+2)*0x2838+0x1670;
37 +        //ret->value_int32 = *(int*)(ONgGameState +0xB6268 + index2 * 0x2838 + 0x1670);
38 +        
39 +        //TODO: Clean up this mess...
40 + //      ret->value_int32 = *active_index;
41 +        
42 +        ret->value_int32 = ((uint32_t*)(ONgGameState +0xB6268+(int)(*active_index)*0x2838+0x1670));
43 +
44 +        ret->type = sl_int32;
45 +        return 0;
46 + }
47 +
48 +
49   uint16_t ONICALL bsl_mul(void* dontuse0, uint32_t numargs, sl_arg args[], void* dontuse1, void* dontuse2, sl_arg* ret)
50   {
51          if (numargs < 2)
# Line 68 | Line 100 | uint16_t ONICALL bsl_div(void* dontuse0,
100          ret->type = sl_float;
101          return 0;
102   }
103 + uint16_t ONICALL bsl_sprintf(void* dontuse0, uint32_t numargs, sl_arg args[], void* dontuse1, void* dontuse2, sl_arg* ret)
104 + {
105 +        if (numargs < 2)
106 +                return 1;
107 +        
108 +
109 + <<<<<<< .mine
110 +        char output[255];
111 +        char temp[255];
112 +        int i = 1;
113 +        for(i; i < numargs; i++)        {
114 +                sprintf(output, args[0].value_str32, args[i].value_str32);/*
115 +                if(args[i].type == sl_int32 || args[i].type == sl_bool) {
116 +                        sprintf(temp, "%i",args[i].value_int32);
117 +                        sprintf(output, args[0].value_str32, temp); }
118 +                else if(args[i].type == sl_float) {
119 +                        sprintf(temp, "%f",args[i].value_float);
120 +                        sprintf(output, args[0].value_str32, temp); }
121 +                else */
122 +        }
123 +        
124 +        ret->value_str32 = output;
125 +        ret->type = sl_str32;
126 +        return 0;
127 + }
128 +
129  
130   uint16_t ONICALL bsl_int32rand(void* dontuse0, uint32_t numargs, sl_arg args[], void* dontuse1, void* dontuse2, sl_arg* ret)
131   {
# Line 95 | Line 153 | uint16_t ONICALL bsl_int32rand(void* don
153          return 0;
154   }
155  
156 +
157   void SLrDaodan_Initalize()
158   {
159          SLrScript_Command_Register_ReturnType("int32mul", "Multiplies two numbers", "n1:int n2:int", sl_int32, bsl_int32mul);
# Line 102 | Line 161 | void SLrDaodan_Initalize()
161          
162          SLrScript_Command_Register_ReturnType("int32div", "Divides two numbers", "n1:int n2:int", sl_int32, bsl_int32div);
163          SLrScript_Command_Register_ReturnType("div", "Divides two numbers", "[int1:int|float1:float] [int2:int|float2:float]", sl_float, bsl_div);
164 +
165 +        
166 +        SLrScript_Command_Register_ReturnType("sprintf", "sprintf", "str1:format str2:value [str3:...]", sl_str32, bsl_sprintf);
167 +
168 +        SLrScript_Command_Register_ReturnType("getkills","Gets the number of kills", "[n1:int]", sl_int32, bsl_getkills);
169 +
170          
171          dsfmt_gv_init_gen_rand((uint32_t)time(NULL));
172          SLrScript_Command_Register_ReturnType("int32rand", "Returns a pseudo-random number between two numbers (inclusive).", "start:int end:int", sl_int32, bsl_int32rand);
173 + >>>>>>> .r440
174   }

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)