Problema con pickups.
#1

Hola a todos. Hace unos pocos dнas que empecй a trabajar con PAWN, a dнa de hoy he aprendido a hacer y reconocer lo bбsico pero algunas cosas quizбs mбs avanzadas se me resisten (supongo que a todos nos ha pasado en un principio).

Bбsicamente donde tengo el problema es como bien digo en el tнtulo, con dos pickups: uno de ellos se encarga de dar armadura completa al usuario que se pone encima de йl y ademбs le suelta un SendClientMessage, el otro, se encarga de avisar que en esa posiciуn te puedes cambiar el skin. (Es el sistema que te sale un TextDraw con las imбgenes de todos los skins, supongo que sabrйis de cual os hablo).

Ahora bien, en un principio creй el pickup de la armadura, todo saliу perfecto y no me daba fallos, se mostraba correctamente. El problema ha sido al meter la informaciуn del otro pickup en el que te cambias el skin en el public OnPlayerPickUpPickup, ahora, cuando paso por el pickup de cambiar el skin, tambiйn me setea armadura y me sale el correspondiente mensaje que puse con SendClientMessage, evidentemente tambiйn me sale el otro mensaje que puse para avisar de que ahн se podнa cambiar el skin y el comando me funciona correctamente. Por otro lado, el comando de la armadura me sigue funcionando igual de bien aunque ahora por alguna extraсa razуn me sale tambiйn un mensaje diciйndome que hay una casa, cuando, en realidad no lo estб.

A continuaciуn procedo a dejar tanto las dos variables creadas, tanto el OnGameModeInit como el OnPlayerPickUpPickup para una posible mejor ayuda. Espero que me haya explicado bien, aъn no sй demasiado bien todos los 'conceptos' de PAWN.


Код:
- Variables

new Armadura;
new skinlist = mS_INVALID_LISTID;
new Ropa;
Код:
 - OnGameModeInit (lo paso entero, por posibles errores)


public OnGameModeInit()
{
  	
	AddStaticVehicle(522, -254.4105, 2603.3188, 62.8583, 0, 5, 5); // Aсades una NRG-500 al punto de spawn seсalizado arriba.
	// BACKUP GATE // CreateObject(975,-220.3999900,2659.3000000,63.3000000,0.0000000,0.0000000,0.0000000); //object(columbiangate) (1)
	CreateObject(8657,-240.2000000,2658.6001000,64.0000000,0.0000000,0.0000000,270.0000000); //object(shbbyhswall10_lvs) (1)
 	CreateObject(8657,-200.5000000,2659.6006000,63.0000000,0.0000000,0.0000000,270.0000000); //object(shbbyhswall10_lvs) (2)
	Ropa = CreatePickup(1239, 1, -252.4105, 2603.3188, 62.8583, -1);
 	Puerta =  CreateObject(975, -220.3999900, 2659.3000000, 63.3000000,0.0000000,0.0000000,0.0000000);
    Armadura = CreatePickup(1239, 1, -249.5859, 2587.7678, 63.5703, -1);
	skinlist = LoadModelSelectionMenu("skins.txt");
 	return 1;

 }
Код:
 - Publics Armadura y selecciуn de skin

 public OnPlayerPickUpPickup(playerid, pickupid)
{
	if(pickupid == Ropa)
 	SendClientMessage(playerid, -1, "ЎAquн puedes comprar ropa!");

	if(pickupid == Armadura) SetPlayerArmour(playerid, 100);
    SendClientMessage(playerid, -1, "ЎAhora tienes armadura completa!");

	return 1;
}
Код:
- Mensaje de la casa que me sale

* House: type /enter to enter
Reply
#2

public OnPlayerPickUpPickup(playerid, pickupid)
{
if(pickupid == Ropa) {
SendClientMessage(playerid, -1, "ЎAquн puedes comprar ropa!"); }

else if(pickupid == Armadura) { SetPlayerArmour(playerid, 100);
SendClientMessage(playerid, -1, "ЎAhora tienes armadura completa!"); }

return 1;
}

Te recomiendo utilizar el switch.
Reply
#3

ЎMuchas gracias, LatinZ! Ahora sн me ha funcionado. Una preguntita mбs, їpodrнas decirme quй he de usar para que el SendClientMessage sуlo me salga 1 vez cuando estoy tocando el pickup y no se repita indefinidamente?

Muchas gracias y un saludo.

PD: їPodrнas decirme quй es eso de 'switch'?, gracias.
Reply
#4

Quote:
Originally Posted by LatinZ
Посмотреть сообщение
public OnPlayerPickUpPickup(playerid, pickupid)
{
if(pickupid == Ropa) {
SendClientMessage(playerid, -1, "ЎAquн puedes comprar ropa!"); }

else if(pickupid == Armadura) { SetPlayerArmour(playerid, 100);
SendClientMessage(playerid, -1, "ЎAhora tienes armadura completa!"); }

return 1;
}

Te recomiendo utilizar el switch.
switch no va a funcionar.
Reply
#5

Crea un bool general y un timer de unos... ї7 segundos?, asн enviarнa cada 7 segundos el mensaje, de todas formas te dejo una idea.


Quote:

new bool:Entro[MAX_PLAYERS]: // Colуcalo donde tengas los news y boolґs generales.

public OnGameModeInit()
{
SetTimer("EntroEnPickup", 7000, true);
// + el cуdigo que tengas.
return 1;
}

forward EntroEnPickup();
public EntroEnPickup()
{
for(new i=0; i < MAX_PLAYERS; i++) // Si tienes foreach, utiliza foreach(new i : Player), es recomendable por temas de lag.
{
Entro[i] = false;
}
return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
Entro[playerid] = true;
if(pickupid == Ropa) { SendClientMessage(playerid, -1, "ЎAquн puedes comprar ropa!"); }

else if(pickupid == Armadura) { SetPlayerArmour(playerid, 100); SendClientMessage(playerid, -1, "ЎAhora tienes armadura completa!"); }

return 1;
}

Reply
#6

Gracias por toda la ayuda, me estб siriviendo de mucho. Para no crear otro post aprovecho este para dejar otra duda mбs:

He creado un sistema de login y registro usando el siguiente tutorial: https://sampforum.blast.hk/showthread.php?tid=273088, mi pregunta es cуmo podrнa tambiйn aсadir a mi GM йste sistema https://sampforum.blast.hk/showthread.php?tid=526382 y que ambos sean compatibles, he intentado hacer ъnicamente creando el public OnPlayerUpdate pero obviamente, cuando entro con una cuenta nueva no pasa nada, se omite el tutorial.


Un saludo, gracias.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)