SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

Participe do fórum, é rápido e fácil

SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!
Chegou o novo tema 6.5.5 - SSGamers - Servidores online de qualidade - Aproveite e entre para nossa comunidade, inscreva-se já! - Ouça nossa web radio - Veja nossas novidades - Participe dos nossos setores de jogos online - Parcerias aberta fale já com um administrador.


3 resultados encontrados para emit

Weslley_Script

[Tutorial] Operadores aritmйticos de #emit - Seg 15 maio 2023 - 12:01

Tutorial para iniciantes Tópicos com a tag emit em SSGamers - 12 Anos online por você. Razz


Para quem nгo sabe, no #emit hб operadores, e com isto, podemos deixar nosso cуdigo mais fuckyea pra fazer uma simples somar, ou multiplicaзгo? Jб pensou?



Vou mostrar os mais bбsicos

SDIV
Faz a divisгo de PRI / ALT



SUB
Faz subtraзгo de PRI ao ALT



NEG
Transforma o valor PRI em negativo



ADD
Adiciona o valor do registro primбrio ao secundбrio



SMUL
Multiplicaзгo entre os registros



RETN
Vocк provavelmente vai precisar disto para retornar, mas nгo necessбria




[size=24]Exemplos:[/size]

Quanto й 1 + 5?
pawn Код:

Código:
printf("%d", ummaiscinco());

stock ummaiscinco() {

    #emit CONST.PRI 5 // carrega o valor 1
    #emit CONST.ALT 1 // carrega o valor 2
    #emit ADD // adiciona os valores
    #emit RETN //retorna o valor
   
    return true; //pra nгo dar avisos
}




Resposta: 6

Quanto й 100 - 50?
pawn Код:

Código:
printf("%d", cemmenoscinquenta());

stock cemmenoscinquenta() {
    #emit CONST.PRI 100
    #emit CONST.ALT 50
    #emit SUB
    #emit RETN
   
    return true;
}



Resposta: 50




Qual valor negativo de 10?
pawn Код:

Código:
printf("%d", menos10());

stock menos10() {

    #emit CONST.PRI 10
    #emit NEG
    #emit RETN
   
    return true;
}



Resposta: -10






Quanto й 10 x 1000?
pawn Код:

Código:
[size=14][size=13]stock dezvesesmil() {

    #emit CONST.PRI 10
   
    #emit CONST.ALT 1000
    #emit SMUL
    #emit RETN
   
    return true;
}

printf("%d", dezvesesmil());[/size][/size]


[center][/center]


Resposta: 10000




pawn Код:

Código:
stock mildivididodez() {

    #emit CONST.PRI 1000
   
    #emit CONST.ALT 10
    #emit SDIV
    #emit RETN
   
    return true;
}
printf("%d", mildivididodez());




Resposta: 100


Tб, cansei. Vocкs jб devem ter captado a mensagem. Na prуxima eu ensino como somar variбveis e mudar os valores delas carregando elas na memуria com LOAD.
Creditos: IPSBruno

Weslley_Script

[Tutorial] Alterar variбveis com #emit - Sáb 13 maio 2023 - 8:04

Essa й a terceira etapa do tutorial. Bem, essa й um pouco mais complicada, mas nгo impede ninguйm de entender, na verdade essa etapa apenas serб para variбveis com STOR e LOAD e futuramente estarei explicando melhor STACK e os outros operadores que #emit dispхe.


Em #emit. Tem dois opcodes bastante importantes chamados STOR E LOAD. Basicamente, LOAD carrega, e STOR SALVA. Como de costume, й tudo baseado em registros primбrios e secundбrios, portanto, novamente as operaзхes serгo feitas em PRI E ALT.



[size=24]Quando usamos[/size]

pawn Код:

Código:
#emit LOAD.S.PRI VARIAVEL



basicamente vocк estarб carregando o valor da VARIAVEL para o registro PRIMБRIO. E quando usamos
pawn Код:

Código:
#emit LOAD.S.ALT VARIAVEL



estaremos carregando no registro secundбrio. Como de padrгo, podemos usar os operadores aritmйticos, que ensinei no tutorial anterior. Logo podemos montar algo como


Quanto й 10 + 5?

pawn Код:

Código:
[size=14][size=13]new var1 = 5;
new var2 = 10;

new resultado;


// carrega o valor de var1 na memуria PRIMARIA
#emit LOAD.S.PRI var1

// carrega valor de var2 na memуria SECUNDARIA
#emit LOAD.S.ALT var2

// como ensinei antes, vai somar o valor de PRI + ALT ou (5 + 10 conforme as variбveis)
#emit ADD[/size][/size]




Pois bem, executamos a soma de var1 + var2. Porйm, como vamos retornar os dados senгo com RETN? Simples, й pra isto que vem STOR, que irб salvar os dados em resultado. Apenas usando

pawn Код:

Código:
// vai salvar o resultado de var1 + var2 na variбvel resultado. Sempre use PRI nestes casos, pois й a memуria principal e й onde o valor das operaзхes ficam salvas
#emit STOR.S.PRI resultado


// imprimir para checar
printf("var1 + var2 = %d", resultado);



Tópicos com a tag emit em SSGamers - 12 Anos online por você. Gc6pnUI



[size=18]Mas e Bruno, podemos usar outros operadores alйm de ADD?[/size]


Claro! Muitos operadores sгo aceitos, em especial os aritmйticos que ensinei na etapa anterior. Basta fazer:




Multiplicar
pawn Код:

Código:
new var1 = 5;
    new var2 = 10;

    new resultado;


    #emit LOAD.S.PRI var1

    #emit LOAD.S.ALT var2

    #emit SMUL // multiplica var1 x var2


    #emit STOR.S.PRI resultado

    printf("%d", resultado);







Subtrair
pawn Код:

Código:
[size=14][size=13]new var1 = 5;
    new var2 = 10;

    new resultado;


    #emit LOAD.S.PRI var1

    #emit LOAD.S.ALT var2

    #emit SUB // subtrai var1 - var2


    #emit STOR.S.PRI resultado

    printf("%d", resultado);[/size][/size]


[center][/center]



e qualquer outra operaзгo que mostrei antes. Alйm disto, se pensares bem, tambйm pode atй trocar o valor das variбveis, uma pela outra

pawn Код:

Código:
new var = 10;
new vor = 20;


printf("%d e %d", vor, var);

#emit LOAD.S.PRI var
#emit LOAD.S.ALT vor

#emit STOR.S.PRI vor // coloca VAR em VOR
#emit STOR.S.ALT var // coloca VOR em VAR

printf("%d e %d", vor, var);




E simplesmente, alterou os valores:
Код:

Código:
[10:32:35] 20 e 10
[10:32:35] 10 e 20



Simples nгo?


Abraзos 
Creditos: IPSBruno

Weslley_Script

[Tutorial] #emitIDXADDR - Sáb 13 maio 2023 - 8:02

Vou começar a fazer uma listinha de tutoriais, com alguns truques que estou aprendendo em #emit. Pra quem nгo sabe o que й isto, favor, veja os seguintes links:





Como podem ver, ambos tutoriais estão incompletos. Porque é simplesmente díficil demais, ensinar #emit, tem muitos opcodes (que nem eu mesmo consegui aprender) e por este motivo é necessário que se façam muitos tutoriais. Pois bem, antes de tudo. Você deve saber o básico de #emit para pelo menos entender esse tutorial.


Nesse pequeno tutorial, vou explicar como é o uso do opcode IDXADDR. Que nгo foi bem explicado em alguns tutoriais. Vamos lá!



basicamente, quando você carrega um array para memуria em #emit
Código do peão:
[size=13]#emit LOAD.S.alt array
[/size]
Você não pode manipular os valores internos dela, por isso existe o IDXADDR, que basicamente é a abreviatura de INDEX ADDRESS, pois você está pegando o valor address INDEX de uma array através do endereço dela. Entenderam? Não?

Vou explicar melhor:

Quando você tem
Código PHP:

Código:
new array [] = {1,2,3,4,5}; 


Em #emit, é muito complicado pegar um ъnico valor desta array (seja 1,2,3,4 ou 5) por este motivo, usando IDXADDR você pode combinar o armazenamento ALT (alternativo) com o PRI (primário) e pegar alguns desses valores de dentro da array, nesse caso, pegará o endereço deles, simplesmente fazendo

Código do peão:

Código:
[size=14][size=13]nova matriz [ ]  =  { 1 , 2 , 3 , 4 , 5 } ;
   
    novo idx =  2 ; // vou pegar o endereço do elemento 2 da array, no caso da parte 3
   
    new arrayvalue; // célula para armazenamento do valor
   
    // carregar array para o registro alternativo
    #emit LOAD.S.alt array
   
    // carregar o valor de idx para o registro primário
    #emit LOAD.S.pri idx
   
    // IDXADDR, neste caso iria armazenar sem registro prнmario: array[iter]
    #emit IDXADDR
   
    // para demonstração, salvarei o valor de array[idx] em arrayvalue
    #emit STOR.S.pri arrayvalue
   
    // mágica! arrayvalue agora tem o valor address da array, que era array[idx] addr
    printf ( "%d" , arrayvalue ) ;[/size][/size]


[center][/center]



EXEMPLO:

Serve para pegar valores na array (уbvio), veja o exemplo:
Código do peão:

Código:
nova matriz [ ]  =  { 48481 , 184 } ;

printf ( "%d" , getidx ( array, 1 ) ) ; // 184

stock getidx ( arr [ ] , idx )  {

    // carrega no registro primário o idx
    #emit LOAD.S.pri idx
   
    // carrega um array no registro secundário
    #emit LOAD.S.alt arr
   
    // pega o endereço de arr[idx]
    #emit IDXADDR
   
    // armazena o valor do endereço em idx
    #emit STOR.S.pri idx
   
    // carrega um array
    #emit LOAD.I
   
    // armazena o valor de arr[idx] em idx agora
    #emit STOR.S.pri idx
   
    // retorna o valor encontrado
    #emit RETN
   
    // faz o compilador feliz
    return  0 ;
}



Viram? É simples, mas pode-se usar para muitas coisas. Logo que eu puder, estarei fazendo outros tutoriais referentes a outros opcodes não mostrados no tutorial do rjj.


Qualquer erro no tutorial avisem.


AbraçosTópicos com a tag emit em SSGamers - 12 Anos online por você. Mrgreen

Creditos IPSBruno


Ir para o topo

Data/hora atual: Qui 30 maio 2024 - 6:06