Проблема с MultiThread
#1

Чтобы снизить нагрузку, решил использовать плагин от Fro1sha MultyThread - https://sampforum.blast.hk/showthread.php?tid=264178

Но почему то он не работает. СА-МП 0.3с. Вот создал 4 потока (создаются в OnGameModeInit)

PHP код:
forward ReKlaMa(threadid); 
forward GUNS(threadid); 
forward ZP(threadid); 
forward TimeChanger(threadid); 
CreateThreadEx("ZP"); 
CreateThreadEx("ReKlaMa"); 
CreateThreadEx("GUNS"); 
CreateThreadEx("TimeChanger"); 
public 
ReKlaMa(threadid)// переодически показывает рекламу 

    
SendClientMessageToAll(0x00FBFFAA,"{33AA33}Полезные команды: /team /rank /info /tp /job /faq /report"); 
    
SleepThread(1000000); 
    return 
1

public 
GUNS(threadid)// переодически выдает рандомное оружие 

    for(new 
iGetMaxPlayers(); i++) 
    { 
        new 
Float:xFloat:yFloat:z
        
GetPlayerPos(ixyz); 
        if(
>= 1769.0328 && >= -1328.0679 && <= 1851.3405 && <= -1266.2637) continue; 
        if(
GetPVarInt(i,"Jailed") > 0) return SendClientMessage(i,COLOR_YELLOW"Вы неполучили бонусное оружие"); 
        
SendClientMessage(iCOLOR_LIGHTBLUE"{FF0000}Время бонусного оружия!!!"); 
        switch(
random(8)) 
        { 
            case 
0:    SendClientMessage(iCOLOR_LIGHTBLUE"{ADFF2F}Из бонусного оружия тебе выпало:{FF0000}М4А1(150)") && GivePlayerWeapon(i,31,150) && GameTextForPlayer(i,"~G~M4A1",5000,1); 
            case 
1SendClientMessage(iCOLOR_LIGHTBLUE"{ADFF2F}Из бонусного оружия тебе выпал:{FF0000}Тек-9(300)") && GivePlayerWeapon(i,32,300) && GameTextForPlayer(i,"~G~TEK-9",5000,1); 
        } 
    } 
    
SleepThread(700000); 
    return 
1

public 
ZP(threadid)//ЗАРПЛАТА 

    for(new 
0MAX_PLAYERSi++) 
    { 
        
SendClientMessage(iCOLOR_LIGHTBLUE"{FFFFFF}-----------{ADFF2F}Прибыль{FFFFFF}----------"); 
        if(
gTeam[i]==TEAM_CTPAXSendClientMessage(iCOLOR_GREENYELLOW"         {FFFFFF}Клан:{ADFF2F}+2500${ADFF2F}     ") && GivePlayerMoney(i,2500); 
        else 
SendClientMessage(iCOLOR_GREENYELLOW"         {FFFFFF}Клан:{ADFF2F} ---{ADFF2F}       "); 
        if(
GetPlayerScore(i) >= 8000SendClientMessage(iCOLOR_GREENYELLOW"         {FFFFF F}Ранг:{ADFF2F}+30000${ADFF2F}    |") && GivePlayerMoney(i,30000); 
        else if(
GetPlayerScore(i) >= 3000&& GetPlayerScore(i) < 8000SendClientMessage(iCOLOR_GREENYELLOW"         {FFFFFF}Ранг:{ADFF2F}+22000${ADFF2F}    ") && GivePlayerMoney(i,22000); 
        else if(
GetPlayerScore(i) >= 1000 && GetPlayerScore(i) < 3000SendClientMessage(iCOLOR_GREENYELLOW"         {FFFFFF}Ранг:{ADFF2F}+17000${ADFF2F}    ") && GivePlayerMoney(i,16000); 
        
SendClientMessage(iCOLOR_GREENYELLOW"|--------------------------------------------"); 
    } 
    
SleepThread(1800000); 
    return 
1

public 
TimeChangerthreadid 

    switch (
TimeHelper
    { 
        case 
0
        { 
            
SetWorldTime(14); 
            
TimeHelper=1
        } 
        case 
1
        { 
            
SetWorldTime(16); 
            
TimeHelper=2
        } 
        case 
2
        { 
            
SetWorldTime(18); 
            
TimeHelper=3
        } 
        case 
3
        { 
            
SetWorldTime(20); 
            
TimeHelper=4
        } 
        case 
4
        { 
            
SetWorldTime(22); 
            
TimeHelper=5
        } 
        case 
5
        { 
            
SetWorldTime(0); 
            
TimeHelper=6
        } 
        case 
6
        { 
            
SetWorldTime(2); 
            
TimeHelper=7
        } 
        case 
7
        { 
            
SetWorldTime(4); 
            
TimeHelper=8
        } 
        case 
8
        { 
            
SetWorldTime(6); 
            
TimeHelper=9
        } 
        case 
9
        { 
            
SetWorldTime(8); 
            
TimeHelper=10
        } 
        case 
10
        { 
            
SetWorldTime(10); 
            
TimeHelper=11
        } 
        case 
11
        { 
            
SetWorldTime(12); 
            
TimeHelper=0
        } 
    } 
    
SaveForRestart(); 
    
SleepThread(300000); 

В чем может быть проблема? Плагин стоит.
Reply
#2

плагин - потоко-небезопасен. использовать не советую.
Reply
#3

Попробуй использовать не CreateThreadEx а CreateThread, мне помогло, но на 0.3d плагин крэшит сервер через 5 минут после старта.
Reply
#4

return 1; убери из пабликов
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)