Problema Status Rapid

Totalitatea subiectelor care nu respectă regulamentul impus in sectiunea "Probleme şi Întrebări" vor fi stocate aici.
Închis
Avatar utilizator
alex9987
Nivel 2

Nivel 2
Mesaje: 251
Membru din: 07 Iun 2017, 15:47
Regat: Jinno
Aprecieri: 160  
Mulţumiri: 2  
Discord: Copiază ID
Medalii

*Problemă/Întrebare: Am si eu o problema cu sistemul de status rapid..se adauga puncte peste limita normala setata
Tipologie server:
*Resursă folosită: python/system-status-rapid-t93229.html
*ServerFiles utilizat: martysama
*Syserr:
Poză: Imagine
*Detalii suplimentare:Am adaugat acest sistem si functioneaza ok dar are o problema de Ex: daca am disponibile 200 puncte status si adaug in sistem 90 si daca dau + si iara + mi se adauga 180 puncte la o abilitate (str)..ce pot face sa am limita de 125 puncte?
Avatar utilizator
[Reizo]
Ţepar / Untrusted User

Ţepar / Untrusted User
Mesaje: 1301
Membru din: 22 Oct 2019, 15:44
Server: SAPPHIRE2
Regat: Chunjo
Aprecieri: 409  
Mulţumiri: 4322  
Discord: Copiază ID
 Contact:
Medalii

Asa, daca am inteles bn problema ta, poti sa o rezolvi rapid din python:


In primul rand modifica AddStat astfel:
	def AddStat(self, stat):
		global maxvalue
		if int(self.editLineDict[stat].GetText()) > maxvalue:
			self.editLineDict[stat].SetText("%d" % maxvalue)

		points = int(self.editLineDict[stat].GetText())

		net.SendChatPacket("/%s+ %s" % (str(stat), str(points)))
Acum, cand adaugi mai mult de maxvalue iti va seta maxvalue, asa nu ai probleme, daca de asta ai nevoie, ca nu prea inteleg mult din ce ai zis acl =))
Imagine
Afișează semnătura
Avatar utilizator
alex9987
Nivel 2

Nivel 2
Mesaje: 251
Membru din: 07 Iun 2017, 15:47
Regat: Jinno
Aprecieri: 160  
Mulţumiri: 2  
Discord: Copiază ID
Medalii

[Reizo] scrie: ↑04 Ian 2021, 18:59 Asa, daca am inteles bn problema ta, poti sa o rezolvi rapid din python:


In primul rand modifica AddStat astfel:
	def AddStat(self, stat):
		global maxvalue
		if int(self.editLineDict[stat].GetText()) > maxvalue:
			self.editLineDict[stat].SetText("%d" % maxvalue)

		points = int(self.editLineDict[stat].GetText())

		net.SendChatPacket("/%s+ %s" % (str(stat), str(points)))
Acum, cand adaugi mai mult de maxvalue iti va seta maxvalue, asa nu ai probleme, daca de asta ai nevoie, ca nu prea inteleg mult din ce ai zis acl =))

Ok mersi am sa incerc, numa sa imi zici in ce fisier gasesc acea funcite!

Deci daca plusez statusu prin click normal nu merge mai mult de 125 de puncte puse, dar daca il pun din sistem si pun 80 si dau + de 2 ori imi pune 160 puncte deci peste limita :)))
Avatar utilizator
[Reizo]
Ţepar / Untrusted User

Ţepar / Untrusted User
Mesaje: 1301
Membru din: 22 Oct 2019, 15:44
Server: SAPPHIRE2
Regat: Chunjo
Aprecieri: 409  
Mulţumiri: 4322  
Discord: Copiază ID
 Contact:
Medalii

alex9987 scrie: ↑04 Ian 2021, 19:04
[Reizo] scrie: ↑04 Ian 2021, 18:59 Asa, daca am inteles bn problema ta, poti sa o rezolvi rapid din python:


In primul rand modifica AddStat astfel:
	def AddStat(self, stat):
		global maxvalue
		if int(self.editLineDict[stat].GetText()) > maxvalue:
			self.editLineDict[stat].SetText("%d" % maxvalue)

		points = int(self.editLineDict[stat].GetText())

		net.SendChatPacket("/%s+ %s" % (str(stat), str(points)))
Acum, cand adaugi mai mult de maxvalue iti va seta maxvalue, asa nu ai probleme, daca de asta ai nevoie, ca nu prea inteleg mult din ce ai zis acl =))

Ok mersi am sa incerc, numa sa imi zici in ce fisier gasesc acea funcite!

Deci daca plusez statusu prin click normal nu merge mai mult de 125 de puncte puse, dar daca il pun din sistem si pun 80 si dau + de 2 ori imi pune 160 puncte deci peste limita :)))
Daca nu merge cu ce ti-am dat incearca comanda asta:
ACMD(do_stat)
{
	char	arg1[256], arg2[256];
	two_arguments(argument, arg1, sizeof(arg1), arg2, sizeof(arg2));
	int val = 0;
	str_to_number(val, arg2);
	
	if (!*arg1 || val <= 0)
		return;

	if (ch->IsPolymorphed())
	{
		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot change your state as long as you are transformed."));
		return;
	}

	if (ch->GetPoint(POINT_STAT) <= 0)
		return;

	BYTE idx = 0;
	
	if (!strcmp(arg1, "st"))
		idx = POINT_ST;
	else if (!strcmp(arg1, "dx"))
		idx = POINT_DX;
	else if (!strcmp(arg1, "ht"))
		idx = POINT_HT;
	else if (!strcmp(arg1, "iq"))
		idx = POINT_IQ;
	else
		return;

	if (ch->GetRealPoint(idx) >= MAX_STAT)
		return;
	
	if (val > ch->GetPoint(POINT_STAT))
		val = ch->GetPoint(POINT_STAT);
	
	if (ch->GetRealPoint(idx) + val > MAX_STAT)
		val = MAX_STAT - ch->GetRealPoint(idx);

	ch->SetRealPoint(idx, ch->GetRealPoint(idx) + val);
	ch->SetPoint(idx, ch->GetPoint(idx) + val);
	ch->ComputePoints();
	ch->PointChange(idx, 0);

	if (idx == POINT_IQ)
		ch->PointChange(POINT_MAX_HP, 0);
	else if (idx == POINT_HT)
		ch->PointChange(POINT_MAX_SP, 0);

	ch->PointChange(POINT_STAT, -val);
	ch->ComputePoints();
}
Si: net.SendChatPacket("/stat %s %s" % (str(stat), str(points)))
Imagine
Afișează semnătura
Avatar utilizator
alex9987
Nivel 2

Nivel 2
Mesaje: 251
Membru din: 07 Iun 2017, 15:47
Regat: Jinno
Aprecieri: 160  
Mulţumiri: 2  
Discord: Copiază ID
Medalii

[Reizo] scrie: ↑04 Ian 2021, 19:08
alex9987 scrie: ↑04 Ian 2021, 19:04
[Reizo] scrie: ↑04 Ian 2021, 18:59 Asa, daca am inteles bn problema ta, poti sa o rezolvi rapid din python:


In primul rand modifica AddStat astfel:
	def AddStat(self, stat):
		global maxvalue
		if int(self.editLineDict[stat].GetText()) > maxvalue:
			self.editLineDict[stat].SetText("%d" % maxvalue)

		points = int(self.editLineDict[stat].GetText())

		net.SendChatPacket("/%s+ %s" % (str(stat), str(points)))
Acum, cand adaugi mai mult de maxvalue iti va seta maxvalue, asa nu ai probleme, daca de asta ai nevoie, ca nu prea inteleg mult din ce ai zis acl =))

Ok mersi am sa incerc, numa sa imi zici in ce fisier gasesc acea funcite!

Deci daca plusez statusu prin click normal nu merge mai mult de 125 de puncte puse, dar daca il pun din sistem si pun 80 si dau + de 2 ori imi pune 160 puncte deci peste limita :)))
Daca nu merge cu ce ti-am dat incearca comanda asta:
ACMD(do_stat)
{
	char	arg1[256], arg2[256];
	two_arguments(argument, arg1, sizeof(arg1), arg2, sizeof(arg2));
	int val = 0;
	str_to_number(val, arg2);
	
	if (!*arg1 || val <= 0)
		return;

	if (ch->IsPolymorphed())
	{
		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot change your state as long as you are transformed."));
		return;
	}

	if (ch->GetPoint(POINT_STAT) <= 0)
		return;

	BYTE idx = 0;
	
	if (!strcmp(arg1, "st"))
		idx = POINT_ST;
	else if (!strcmp(arg1, "dx"))
		idx = POINT_DX;
	else if (!strcmp(arg1, "ht"))
		idx = POINT_HT;
	else if (!strcmp(arg1, "iq"))
		idx = POINT_IQ;
	else
		return;

	if (ch->GetRealPoint(idx) >= MAX_STAT)
		return;
	
	if (val > ch->GetPoint(POINT_STAT))
		val = ch->GetPoint(POINT_STAT);
	
	if (ch->GetRealPoint(idx) + val > MAX_STAT)
		val = MAX_STAT - ch->GetRealPoint(idx);

	ch->SetRealPoint(idx, ch->GetRealPoint(idx) + val);
	ch->SetPoint(idx, ch->GetPoint(idx) + val);
	ch->ComputePoints();
	ch->PointChange(idx, 0);

	if (idx == POINT_IQ)
		ch->PointChange(POINT_MAX_HP, 0);
	else if (idx == POINT_HT)
		ch->PointChange(POINT_MAX_SP, 0);

	ch->PointChange(POINT_STAT, -val);
	ch->ComputePoints();
}
Si: net.SendChatPacket("/stat %s %s" % (str(stat), str(points)))
Nu vrea nici cum! renunt la el Mersii fain!!
Avatar utilizator
[Reizo]
Ţepar / Untrusted User

Ţepar / Untrusted User
Mesaje: 1301
Membru din: 22 Oct 2019, 15:44
Server: SAPPHIRE2
Regat: Chunjo
Aprecieri: 409  
Mulţumiri: 4322  
Discord: Copiază ID
 Contact:
Medalii

alex9987 scrie: ↑04 Ian 2021, 19:58 Nu vrea nici cum! renunt la el Mersii fain!!
Poti folosi comanda cce ti-am dat-o mai sus, si sa ii faci functie sa adauge din 10 in 10 ca default.

In fine, arhivat.
Imagine
Afișează semnătura
Închis
Răspunsuri
3
Vizualizări
419
Răspunsuri
4
Vizualizări
302

Înapoi la “Arhivă Probleme şi Întrebări”

  • Informaţie
  • Cine este conectat

    Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 13 vizitatori