sobre esc
#1

Pessoal, existe possнbilidade de fazer uma funзгo sem usar timer para descubrir se o jogador estб 'ausente' de 'esc' ?

Como por exemplo uma funзгo:


Jogador Russo estб de esc.

Jogador Russo voltou do esc.


e lуgico, sem comandos para as informaзхes.

Alguйm tem alguma lуgica ou dica para fazer o mesmo ?
Reply
#2

Nao tem como detectar a tecla ESC, mas em alternativa, podes verificar se o OnPlayerUpdate nao for chamado por 2 a 3 segundos
Reply
#3

Como irei detectar se ele nгo for chamado ?
Reply
#4

olha aqui

pawn Код:
public OnPlayerConnect(playerid)
{

  SetPVarInt(playerid, "pause", 0);
  SetTimerEx("Paused", 1000, 1, "i", playerid);
  //ofc could be given an ID to be killed on exit or on gamemode exit, but i'm just making an example
  return 1;
}

public OnPlayerUpdate(playerid)
{
  SetPVarInt(playerid, "pause", 0);
  return 1;
}

forward Paused(playerid);
public Paused(playerid)
{
  if( GetPVarInt(playerid, "pause") != 0 ) printf("%i is paused", playerid);
  SetPVarInt(playerid, "pause", 1);
  return 1;
}
By; cmg4life

qualquer coisa ve mais aqui
Reply
#5

Eu tive uma lуgica semelhante, iria usar bools para isto, porйm utilizando Pvars da um resultado mais fast, correto ?
Reply
#6

correto
Reply
#7

PT, utilizando Pvrs em inves de algumas variбveis globais, isso diminuirб o uso de processador do host ?

Por exemplo, meu game-mode tem bastante quantidade variбveis globais, nгo que nгo esteja sendo utilizadas, pelo contrбrio, todas tem suas funзхes. Agora se eu transferir maioria delas para pvrs as "compativeis" isto iria me poupar processamento ?
Reply
#8

quanto mais rapido for, menos usa o CPU

por isso ve por ti

pawn Код:
#include <a_samp>

#define LOOP  1000000 // 1 milhao

main()
{
    new teste, teste2, playerid, Variavel[MAX_PLAYERS];
   
    teste = tickcount();
   
    for(new i; i < LOOP; i ++) if(Variavel[playerid] == 0) continue;
   
    printf("Variavel Normal: %d", tickcount()-teste);
   
    teste2 = tickcount();
   
    for(new i; i < LOOP; i ++) if(GetPVarInt(playerid, "testando") == 0) continue;
   
    printf("Pvars: %d", tickcount()-teste2);
}
sobre Pvars olha este topico do ****** https://sampforum.blast.hk/showthread.php?tid=268499
Reply
#9

Sim, realmente й mais rбpida.

Nгo sei por qual motivo, meu game-mode й super otimizado, mas quando ligado ele ocupa 4% de CPU.

Quando estб por volta de 100/110 players fica em torno de 15% a 20% isto й muito?

O tamanho dele й de 925 kb (AMX) pwn 856 (pawn) no caso estб definido o MAX_PLAYERS a meu gosto, porem nгo sei por qual motivo ele inicia com 4% de uso de CPU, pois o mesmo possui poucos timers e nгo possui funзхes renundantes ou que causam lag na callback OnPlayerUpdate. O game-mode possui 14717 linhas, o mesmo foi tгo otimizado que foi poupado +/- 20 mil linhas, sendo assim nгo era para ganhar processamento ?

Lembrando que se eu executasse ele sem limite no MAX_PLAYERS, o tamanho dele ficaria em torno de 1950kb (AMX).
Reply
#10

isso nem sempre e mau, sabias?

usando mais recursos de cpu, mas claro so os necessarios, pode diminuir o lag e aumentar a velocidade do sv, para quem achar que eu estou errado, leia isto.

acho que o teu esta dentro do normal
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)