XML talk:BINA/OBJC/TRGV: Difference between revisions

comparing by index, duh
(aha)
(comparing by index, duh)
Line 43: Line 43:


I sort of found a workaround, where I copy the value of '''ai_name''' to '''testVar''' not directly, but via Daodan's '''sprintf''' (basically you do '''testVar = sprintf("%s",ai_name)''' instead of '''testVar = ai_name'''). This fills '''testVar''' with some garbage (in my test it was "hӌ"), but it's some consistent garbage that is somehow related to '''ai_name''' - so you can use this at spawn time to initialize the "reference name" of a character, and later check against it with names that you receive from death functions, trigger volumes, etc. I didn't check this thoroughly, but I will make an illustration (probably in TCTF HQ, where many Vanilla CHARs have spawn functions). Also, I have no idea why '''sprintf''' garbles the literal like that when it comes from runtime, so that's another thing that will need to be checked. --[[User:Geyser|geyser]] ([[User talk:Geyser|talk]]) 13:56, 18 May 2020 (CEST)
I sort of found a workaround, where I copy the value of '''ai_name''' to '''testVar''' not directly, but via Daodan's '''sprintf''' (basically you do '''testVar = sprintf("%s",ai_name)''' instead of '''testVar = ai_name'''). This fills '''testVar''' with some garbage (in my test it was "hӌ"), but it's some consistent garbage that is somehow related to '''ai_name''' - so you can use this at spawn time to initialize the "reference name" of a character, and later check against it with names that you receive from death functions, trigger volumes, etc. I didn't check this thoroughly, but I will make an illustration (probably in TCTF HQ, where many Vanilla CHARs have spawn functions). Also, I have no idea why '''sprintf''' garbles the literal like that when it comes from runtime, so that's another thing that will need to be checked. --[[User:Geyser|geyser]] ([[User talk:Geyser|talk]]) 13:56, 18 May 2020 (CEST)
OK, good news and bad news. '''Bad:''' string management is fundamentally messy, including '''sprintf'''. Like, I was expecting '''sprintf'''-created strings to stay protected, but they're easily overwritten by other data, depending on the context - it's like the "string" is just a raw char* and there is nothing to keep track of the allocated memory at all. '''Good:''' the following works:
func void t48_dead(string ai_name)
{
    var int index = d_getindex(ai_name);
    var int index0 = d_getindex(A_t48);
    if(index eq index0)
        dmsg("A_t48 detected!")
    else
        dmsg("No index match!")
}