[AYUDA] Varias Preguntas solo para PROfecionales
#1

hola a todos los que estan leyendo esto tengo varias preguntas espero que me puedan responderlas.
Preguntas:

1є:dond puedo sacar o saber las id para poner un sonido luego de una funcion? y cual es la linea de playsound

2є:tengo un problema con un GM:

pawn Код:
/*********************************************************************************
* + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + + + + + + *
*                        4game-rp Roleplay [ES]                                   *
*                        [GM 2.0] Creado by Feder1                             *
*                        [GM 1.0] Creado by Feder1 wesk3r y network            *
*                        [GM original GF creditos: Fear & astro.....]          *
* + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + + + + + + *
********************************************************************************/
al cual cuando compila no me sale error sino me sale otra cosa

pawn Код:
Pawn compiler 3.2.3664          Copyright (c) 1997-2006, ITB CompuPhase

Header size:           9428 bytes
Code size:          1595636 bytes
Data size:         11150152 bytes
Stack/heap size:      16384 bytes; estimated max. usage=5459 cells (21836 bytes)
Total requirements:12771600 bytes
lo que yo entendi del compile es que es muy pesado el GM osea mi pregunta es їhay un codigo o algo para que esto no pase?

3є:yo tengo el [FS]Ladmin4v2 y [FS]Banco y los comando del banco son es estos: /retirar /depositar /saldo

/depositar:
pawn Код:
CMD:depositar(playerid, params[])
{
    new dinero, string[128];
    if(sscanf(params, "d", dinero)) return SendClientMessage(playerid, COLOR_WHITE, "USO: /depositar <cantidad>");
    if(!sscanf(params, "d", dinero))
    {
        if(GetPlayerMoney(playerid) < dinero) return SendClientMessage(playerid, COLOR_LIGHTGREEN, "No tienes ese dinero!");
        if(GetPlayerMoney(playerid) >= dinero)
        {
            new pname[MAX_PLAYER_NAME];
            GetPlayerName(playerid, pname, sizeof(pname));
            format(archivo, sizeof(archivo), "Banco/%s.txt", pname);

            if(dini_Exists(archivo))
            {
                dini_IntSet(archivo, "Saldo", dini_Int(archivo, "Saldo") +dinero);
            }
            else if(!dini_Exists(archivo))
            {
                dini_Create(archivo);
                dini_IntSet(archivo, "Saldo", dinero);
            }
            format(string, sizeof(string), "|- Banco -| Depositaste %d, tu saldo actual es %d", dinero, dini_Int(archivo, "Saldo"));
            SendClientMessage(playerid, COLOR_LIGHTGREEN, string);
            GivePlayerMoney(playerid, -dinero);
        }
    }
    return 1;
}
cual es mi pregunta?їcomo hago para que el jugador que quiera usar estos comando del banco tengan que estar registrado. yo puse estaslineas
pawn Код:
if(PlayerInfo[playerid][LoggedIn] == 1)
y me compila bien ha pero yo agrege este FS del banco al FS del Ladmin4v2 para que la linea de arriva me ande y como les dije me compila bien osea queda asi
pawn Код:
CMD:depositar(playerid, params[])
{
    new dinero, string[128];
    if(PlayerInfo[playerid][LoggedIn] == 1)
    if(sscanf(params, "d", dinero)) return SendClientMessage(playerid, COLOR_WHITE, "USO: /depositar <cantidad>");
    if(!sscanf(params, "d", dinero))
    {
        if(GetPlayerMoney(playerid) < dinero) return SendClientMessage(playerid, COLOR_LIGHTGREEN, "No tienes ese dinero!");
        if(GetPlayerMoney(playerid) >= dinero)
        {
            new pname[MAX_PLAYER_NAME];
            GetPlayerName(playerid, pname, sizeof(pname));
            format(archivo, sizeof(archivo), "Banco/%s.txt", pname);

            if(dini_Exists(archivo))
            {
                dini_IntSet(archivo, "Saldo", dini_Int(archivo, "Saldo") +dinero);
            }
            else if(!dini_Exists(archivo))
            {
                dini_Create(archivo);
                dini_IntSet(archivo, "Saldo", dinero);
            }
            format(string, sizeof(string), "|- Banco -| Depositaste %d, tu saldo actual es %d", dinero, dini_Int(archivo, "Saldo"));
            SendClientMessage(playerid, COLOR_LIGHTGREEN, string);
            GivePlayerMoney(playerid, -dinero);
        }
    }
    return 1;
}
pero cuando entro al juego no me andan ningun comando del [FS]Ladmin4v2 si lo pueden solucionar ayudenme

4є:como hago para que los jugadores que cuando cumpla un requisito (score=asesinatos) pueda tener asexo a un comando por ejemplo que cuando un jugador tega 2000 de score pueda usar un comando.

5є:como hago para que cuando muera un player aparesca un mensaje en la pantalla "Eliminado"
pawn Код:
GameTextForPlayer()
esta es la linea pero falta un monton de codigos y esas cosas

Bueno esas son todas mis DUDAS porfavor si saven contesten grasias y CHAU
Reply
#2

mira en la 5 lo unico que debes hacer es el GameTextForPlayer(playerid, "Eliminado", 1000,1);

esto va en el callback OnPlayerDeath mira si quieres te puedes ayudar para hacer con colores con mi GameTextCreator que te permita hacer tus textos con mayor facilidad y con colores y explica en que callbacks puedes colocarlo Encuentralo aki
Reply
#3

1. Si te refieres a las idґs de sonidos presiona aquн y aquн para el cуdigo "PlayePlaySound"

2. Eso es porque algъn string, estб como "sobrecargado" o otra cosa, es dificil de solucionar, ya que ese GM es largo.

3. No entiendo bien la pregunta.

4. En "OnPlayerUpdate:"
Код:
new score;
score = GetPlayerScore(playerid);
if (score < 2000.0)
{
PlayerInfo[playerid][scored] = 1;
}
Luego creamos la variable: arriba
Код:
enum Player
{
scored
}
new PlayerInfo[MAX_PLAYERS][Player];
y en "OnPlayerCommandText:"
Код:
if(strcmp("/comando",cmdtext,true,10)==0)
{
if(PlayerInfo[playerid][scored] == 1)
{
//funciones
}
return 1;
}
La verdad, nose si funcionarб hace tiempo que no hago cosas de esas.

5. En "OnPlayerDeath:"
Код:
GameTextForPlayer(playerid, "Eliminado", 3000, 4); //3000 es el tiempo es decir 3 segundos, el 4 la fuente.
Ojalб te haya ayudado
Reply
#4

Код:
Pawn compiler 3.2.3664          Copyright © 1997-2006, ITB CompuPhase

Header size:           9428 bytes
Code size:          1595636 bytes
Data size:         11150152 bytes
Stack/heap size:      16384 bytes; estimated max. usage=5459 cells (21836 bytes)
Total requirements:12771600 bytes
Soluciуn:
pawn Код:
//abajo de a_samp
#pragma dynamic 12771600
Reply
#5

pawn Код:
Pawn compiler 3.2.3664          Copyright (c) 1997-2006, ITB CompuPhase

Header size:           9428 bytes
Code size:          1595636 bytes
Data size:         11150152 bytes
Stack/heap size:      16384 bytes; estimated max. usage=5459 cells (21836 bytes)
Total requirements:12771600 bytes
Esto se debe a la gran cantidad de array's que usas, las celdas son demasiado grandes.
Solucion: Achicalas.
Reply
#6

Quote:
Originally Posted by TiNcH010
Посмотреть сообщение
pawn Код:
Pawn compiler 3.2.3664          Copyright (c) 1997-2006, ITB CompuPhase

Header size:           9428 bytes
Code size:          1595636 bytes
Data size:         11150152 bytes
Stack/heap size:      16384 bytes; estimated max. usage=5459 cells (21836 bytes)
Total requirements:12771600 bytes
Esto se debe a la gran cantidad de array's que usas, las celdas son demasiado grandes.
Solucion: Achicalas.
aveces es necesario usar mas arrays de lo necesario, para eso esta #pragma dynamic
Reply
#7

Esa no es la soluciуn, eso serнa como un 'parche'. Yo creo que si por defecto te pone que no tenes que sobre pasar lo mбximo dedicado a eso, es por algo. Osea, como recomendбndote que no lo pases... Una soluciуn podrнa ser declarar un string global y usarlo para todo el GM =/
Reply
#8

Quote:
Originally Posted by Mati_IBV
Посмотреть сообщение
Код:
Pawn compiler 3.2.3664          Copyright © 1997-2006, ITB CompuPhase

Header size:           9428 bytes
Code size:          1595636 bytes
Data size:         11150152 bytes
Stack/heap size:      16384 bytes; estimated max. usage=5459 cells (21836 bytes)
Total requirements:12771600 bytes
Soluciуn:
pawn Код:
//abajo de a_samp
#pragma dynamic 12771600
Si crees que esa es la solucion estas muy equivocado, estas asignando mas memoria cuando lo que en realidad deberias hacer es optimizar y reducir el uso de memoria en tu codigo, como dice el dicho en el ambito de la programacion "make it work, make it right make it fast"


edit: mati_ibv te contradecis a vos mismo "es necesario usar mas arrays de lo necesario", en una incoherencia tremenda :/
Reply
#9

Quote:
Originally Posted by adri1
Посмотреть сообщение
1. Si te refieres a las idґs de sonidos presiona aquн y aquн para el cуdigo "PlayePlaySound"

2. Eso es porque algъn string, estб como "sobrecargado" o otra cosa, es dificil de solucionar, ya que ese GM es largo.

3. No entiendo bien la pregunta.

4. En "OnPlayerUpdate:"
Код:
new score;
score = GetPlayerScore(playerid);
if (score < 2000.0)
{
PlayerInfo[playerid][scored] = 1;
}
Luego creamos la variable: arriba
Код:
enum Player
{
scored
}
new PlayerInfo[MAX_PLAYERS][Player];
y en "OnPlayerCommandText:"
Код:
if(strcmp("/comando",cmdtext,true,10)==0)
{
if(PlayerInfo[playerid][scored] == 1)
{
//funciones
}
return 1;
}
La verdad, nose si funcionarб hace tiempo que no hago cosas de esas.

5. En "OnPlayerDeath:"
Код:
GameTextForPlayer(playerid, "Eliminado", 3000, 4); //3000 es el tiempo es decir 3 segundos, el 4 la fuente.
Ojalб te haya ayudado
no la cuatro no m funciono
Reply
#10

Cada uno tiene su forma de scriptear.
En mi caso, ni loco usarнa #pragma dynamic para achicar las celdas (mensaje al fin de compilar por tener grandes array's). La mejor soluciуn es hacerla a la original, osea, achicando celdas y listo.
Tengo un GM de 70 mil lнneas que conozco que esta muy bien scripteado y no da ningъn warning de celdas.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)