Changeset 441


Ignore:
Timestamp:
Jul 18, 2009, 2:55:15 AM (15 years ago)
Author:
gumby
Message:
 
Location:
Daodan/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • Daodan/src/Daodan_BSL.c

    r440 r441  
    33#include "Daodan_BSL.h"
    44#include "BFW_ScriptingLanguage.h"
    5 
     5#include <stdio.h>
     6#include "Oni.h"
     7#include "Oni_Character.h"
    68#include "dSFMT\dSFMT.h"
    79
     
    1416        return 0;
    1517}
     18
     19uint16_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
    1648
    1749uint16_t ONICALL bsl_mul(void* dontuse0, uint32_t numargs, sl_arg args[], void* dontuse1, void* dontuse2, sl_arg* ret)
     
    69101        return 0;
    70102}
     103uint16_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
    71129
    72130uint16_t ONICALL bsl_int32rand(void* dontuse0, uint32_t numargs, sl_arg args[], void* dontuse1, void* dontuse2, sl_arg* ret)
     
    96154}
    97155
     156
    98157void SLrDaodan_Initalize()
    99158{
     
    103162        SLrScript_Command_Register_ReturnType("int32div", "Divides two numbers", "n1:int n2:int", sl_int32, bsl_int32div);
    104163        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
    105170       
    106171        dsfmt_gv_init_gen_rand((uint32_t)time(NULL));
    107172        SLrScript_Command_Register_ReturnType("int32rand", "Returns a pseudo-random number between two numbers (inclusive).", "start:int end:int", sl_int32, bsl_int32rand);
     173>>>>>>> .r440
    108174}
  • Daodan/src/Oni_Character.h

    r438 r441  
    536536};
    537537
    538 
    539 int     chr_isplayer                    =               0x00000001;     //is player character
    540 int     chr_randomskin                  =               0x00000002;     //gets random skin from ONCV
    541 int     chr_notprespawned               =               0x00000004;     //isn't spawned at level creation
    542 int     chr_noncombatant                =               0x00000008;     //doesn't fight
    543 int     chr_multispawnable              =               0x00000010;     //can spawn up to 5 without forcing
    544 int     chr_unknown                             =               0x00000020;     //
    545 int     chr_unkillable                  =               0x00000040;     //can only be brought to 1 hp
    546 int     chr_superammo                   =               0x00000080;     //infinite ammo
    547 int     chr_omniscient                  =               0x00000100;     //touchofdeath
    548 int     chr_haslsi                              =               0x00000200;     //drops an lsi
    549 int     chr_boss                                =               0x00000400;     //is a boss character
    550 int     chr_upgradedifficulty   =               0x00000800;     //upgrade the difficulty if you play on med\hard
    551 int     chr_noautodrop                  =               0x00001000;     //uses drop fields instead of has fields on death
    552 
     538enum {
     539chr_isplayer                    =               0x00000001,     //is player character
     540chr_randomskin                  =               0x00000002,     //gets random skin from ONCV
     541chr_notprespawned               =               0x00000004,     //isn't spawned at level creation
     542chr_noncombatant                =               0x00000008,     //doesn't fight
     543chr_multispawnable              =               0x00000010,     //can spawn up to 5 without forcing
     544chr_unknown                             =               0x00000020,     //
     545chr_unkillable                  =               0x00000040,     //can only be brought to 1 hp
     546chr_superammo                   =               0x00000080,     //infinite ammo
     547chr_omniscient                  =               0x00000100,     //touchofdeath
     548chr_haslsi                              =               0x00000200,     //drops an lsi
     549chr_boss                                =               0x00000400,     //is a boss character
     550chr_upgradedifficulty   =               0x00000800,     //upgrade the difficulty if you play on med\hard
     551chr_noautodrop                  =               0x00001000,     //uses drop fields instead of has fields on death
     552}; //
    553553int16_t ONICALL ONrGameState_NewCharacter(CharacterObject* CHAR, void* AISA, void* flag, int* list_location);
    554554//int16_t ONICALL ONrGameState_GetPlayerCharacter();
Note: See TracChangeset for help on using the changeset viewer.