Voices Management
Dudix
02.01.2011
Witam.
Widząc zalety pluginu Voices Management, wpadłem na pomysł by rozbudować go nieco, tak aby mógł być wykorzystywany na serwerach TP. Mianowicie, aby gracze z drużyny bez względu na to czy są żywi czy nie, slyszeli siebie i mogli mówić do siebie. Czyli plugin zastępowałby działanie zewnętrznego serwera głosowego. Przeanalizowałem dokładnie kod pluginu i wprowadziłem wartość dwóch cvarów, cyfrę 3.
Następnie dodałem do dwóch switch'y "case 3"
oraz do kolejnych dwóch switch'y "case 3".
Kompilacja przebiegła pomyślnie. Niestety plugin nie działa poprawnie, gdyż po dołączeniu na serwer i wybraniu drużyny serwer się crashuje. Dzięki metodzie prób i błędów zauważyłem, że problem występuje w instrukcji warunkowej znajdującej się w "case 3". Co może być błędem?
W załączniku zamieściłem całe .sma.
Widząc zalety pluginu Voices Management, wpadłem na pomysł by rozbudować go nieco, tak aby mógł być wykorzystywany na serwerach TP. Mianowicie, aby gracze z drużyny bez względu na to czy są żywi czy nie, slyszeli siebie i mogli mówić do siebie. Czyli plugin zastępowałby działanie zewnętrznego serwera głosowego. Przeanalizowałem dokładnie kod pluginu i wprowadziłem wartość dwóch cvarów, cyfrę 3.
vm_alives 3 vm_deads 3
Następnie dodałem do dwóch switch'y "case 3"
switch( iAlives ) { case 0:szAlivesStatus = "VM_ALIVES_TEAMATES" case 1:szAlivesStatus = "VM_ALIVES" case 2:szAlivesStatus = "VM_ALL" case 3:szAlivesStatus = "VM_TEAMATES" } switch( iDeads ) { case 0:szDeadsStatus = "VM_DEADS_TEAMATES" case 1:szDeadsStatus = "VM_DEADS" case 2:szDeadsStatus = "VM_ALL" case 3:szDeadsStatus = "VM_TEAMATES" }
oraz do kolejnych dwóch switch'y "case 3".
if(g_bAlive[iReceiver]) { switch(get_pcvar_num(g_pcvarAlivesHear)) { case 0: { if( g_bAlive[iSender] && get_pdata_int(iReceiver, OFFSET_TEAM) == get_pdata_int(iSender, OFFSET_TEAM) ) { engfunc(EngFunc_SetClientListening, iReceiver, iSender, true) forward_return(FMV_CELL, true) return FMRES_SUPERCEDE } } case 1: { if( g_bAlive[iSender] ) { engfunc(EngFunc_SetClientListening, iReceiver, iSender, true) forward_return(FMV_CELL, true) return FMRES_SUPERCEDE } } case 2: { engfunc(EngFunc_SetClientListening, iReceiver, iSender, true) forward_return(FMV_CELL, true) return FMRES_SUPERCEDE } case 3: { if( get_pdata_int(iReceiver, OFFSET_TEAM) == get_pdata_int(iSender, OFFSET_TEAM) ) { engfunc(EngFunc_SetClientListening, iReceiver, iSender, true) forward_return(FMV_CELL, true) return FMRES_SUPERCEDE } } } } else { switch(get_pcvar_num(g_pcvarDeadsHear)) { case 0: { if( !g_bAlive[iSender] && get_pdata_int(iReceiver, OFFSET_TEAM) == get_pdata_int(iSender, OFFSET_TEAM) ) { engfunc(EngFunc_SetClientListening, iReceiver, iSender, true) forward_return(FMV_CELL, true) return FMRES_SUPERCEDE } } case 1: { if( !g_bAlive[iSender] ) { engfunc(EngFunc_SetClientListening, iReceiver, iSender, true) forward_return(FMV_CELL, true) return FMRES_SUPERCEDE } } case 2: { engfunc(EngFunc_SetClientListening, iReceiver, iSender, true) forward_return(FMV_CELL, true) return FMRES_SUPERCEDE } case 3: { if( get_pdata_int(iReceiver, OFFSET_TEAM) == get_pdata_int(iSender, OFFSET_TEAM) ) { engfunc(EngFunc_SetClientListening, iReceiver, iSender, true) forward_return(FMV_CELL, true) return FMRES_SUPERCEDE } } } }
Kompilacja przebiegła pomyślnie. Niestety plugin nie działa poprawnie, gdyż po dołączeniu na serwer i wybraniu drużyny serwer się crashuje. Dzięki metodzie prób i błędów zauważyłem, że problem występuje w instrukcji warunkowej znajdującej się w "case 3". Co może być błędem?
W załączniku zamieściłem całe .sma.
Załączone pliki
mgr inż. Pavulon
02.01.2011
Dudix
02.01.2011
Chciałem być pierwszy
Przydałoby się plugin z tamtego tematu opublikować bo trudno go znaleźć.
Przydałoby się plugin z tamtego tematu opublikować bo trudno go znaleźć.
mgr inż. Pavulon
02.01.2011
Ale tam wciąż nikt nie odpisał czy to działa, a ja nie testowałem.
Dudix
10.01.2011
Tamten plugin nie działa. Ma taki sam błąd w działaniu jak mój. Mógłby ktoś przenalizować kod?