Script text flottant "return"

Répondre
Partager Rechercher
Bonjour, Je sais....le titre veut pas dire grand chose..C dur de résumé de deux mot.....
Donc voici un script que j'ai pondu :

Code:
 
default
{
	state_entry()
	{
		llSetText("-- POUR ACHETER --
Click droit et payer 100L", <1,1,1>, 1.5);
	}
		on_rez( integer param )
	{
			state ready;
	}
}
state ready
{
	state_entry()
	{
		llSetText("MERCI! / Thank you!", <1,0,0.5>, 1.5);
		return;
	}
}
Ce code est destiné a afficher le texte : "-- POUR ACHETER --
Click droit et payer 100L" en permanence et ensuite afficher "spontanément sur ordre le second texte : "MERCI! / Thank you!" lorsque l'objet a été "payé".

Je sais, C pas bon, je me suis servi d'autre script donc j'ai fait des copier coller, suis vraiment pas un pro, juste autodidacte.
Dans ce cas la, le texte de début s'affiche nikel mais je sais pas quel code il faut mettre a la place de on-rez pour que ca active lors d'un paiement.

Et donc ensuite le return pour remettre le script a son état d'origine... C ce que j'ai comprendre en tout cas en regardant les autres scripts.

PS : Notez bien que je suis pas du tout scripteur, alors soyez pas trop dur avec moi....

Me plizzzzeee
copie-collage direct de ma réponse sur le fil "payer pour exécuter un script", puisque les infos, et les fonctions, sont les mêmes:

tu utilises l'événement money() (qui permet de détecter un paiement)
et la fonction llSetPayPrice() (qui permet de définir ce que tu vois quand tu fais 'payer' sur le click droit)
Clique sur les liens pour plus d'info sur le wiki.

ça donne un code du style:
Code:
default {
    state_entry() {
        llSetText("-- POUR ACHETER -- Click droit et payer 100L", <1,1,1>, 1.5);
        llSetPayPrice(100, [PAY_HIDE, PAY_HIDE, PAY_HIDE, PAY_HIDE]); }

    money(key id, integer amount) {
        llInstantMessage(id, "MERCI! pour vos " + (string)amount + "L$ / Thank you! for your " + (string)amount + "L$" ); } }
Merci bien master, ca marche mais a partir uniquement de ce script.
En fait, j'ai pas expliqué exactement : J'ai 2 script dans mon contenu, l'un pour le paiement partage % et l'autre uniquement pour l'affichage du titre que j'essai (vainement..?) de faire, ton script et nikel mais j'arrive pas à l'adapter.

Voici le script de paiement que j'ai un peu modifié :

Code:
 
 
integer price;
key ida;
key idb;
float pca;
float pcb;
key buyer_id;
give_items()
{
	integer i;
	list give;
	list item_give;
	integer do_individual = FALSE;
	for ( i=0 ; i<llGetInventoryNumber( INVENTORY_ALL ) ; i++ )
	{
		string iname = llGetInventoryName( INVENTORY_ALL, i );
		if ( iname != llGetScriptName() )
		{
			if ( ( llGetInventoryPermMask( iname, MASK_OWNER ) & PERM_COPY ))
			{
				give = give + [ iname ];
			}
			else
			{
				item_give = item_give + [ iname ] ;
				do_individual = TRUE;
			}
		}	
 
	}
	llGiveInventoryList( buyer_id, llGetObjectName(), give );
	if ( do_individual )
	{
		for ( i=0 ; i>llGetListLength( item_give ) ; i++ )
		{
			llGiveInventory( buyer_id, llList2String( item_give, i ));
		} 
	}
}
init()
{
	llRequestPermissions ( llGetOwner(), PERMISSION_DEBIT );
}
default
{
	state_entry()
	{
		init();
	}
	on_rez( integer param )
	{
		init();
	}
	run_time_permissions( integer perm )
	{
		if ( (perm && PERMISSION_DEBIT) )
		{
			state ready;
		}
	}
}
state ready
{
	state_entry()
	{
		llSetText("MERCI! / Thank you!", <1,0,0.5>, 1.5);
		list temp = llCSV2List(llGetObjectDesc());
		price = (integer)llList2String(temp,0);
		ida = llList2String(temp,1);
		pca = (float)llList2String(temp,2);
		idb = llList2String(temp,3);
		pcb = (float)llList2String(temp,4);
		llOwnerSay ( (string)pca + " percent will go to (1st name shown) ");
		llRequestAgentData ( ida, DATA_NAME );
		llOwnerSay ( (string)pcb + " percent will go to (2nd name shown) ");
		llRequestAgentData ( idb, DATA_NAME );
		llSleep(2);
		llSetText ((string)price + " L$", <1,1,1>,1);
	}
	dataserver( key id, string NAME )
	{
		llOwnerSay( NAME + " will receive proceeds from sale of this item" );
	}
	money ( key id, integer amount )
	{
		buyer_id = id;
		if ( amount != price )
		{
			llInstantMessage( id, "Sorry the price for this item is " + (string)price +". Your payment has been refunded");
			llGiveMoney( id, amount );
			return;
		}
		give_items();
		llInstantMessage ( id, "Thankyou for your purchase - We hope you enjoy");
		float calc = amount + 0.0;
		float a = calc * ( pca/100 );
		float b = calc * ( pcb/100 );
		llGiveMoney( ida, (integer)a );
		llGiveMoney( idb, (integer)b );
		llOwnerSay ( llGetObjectName() + " was purchased and the proceeds split as follows :" );
		llOwnerSay ( (string)a + " to person 1, and " + (string)b + " to person 2." );
		llInstantMessage ( ida, "you have been paid " + (string)a +
								" from the sale of " + llGetObjectName() );
		llInstantMessage ( ida, "you have been paid " + (string)a +
								" from the sale of " + llGetObjectName() );
	}
}
Suivi donc du script précédent.

Pour info j'ai modifié le script de paimement % d'origine car si le client répondait non a la question de payer, la fenêtre s'ouvrait indéfiniment jusqu'à ce qu'il dise oui. Ca prend à la gorge, CT pas cool.
Du coup j'ai fait des pitite modifs, je suis pas un pro mais ca fonctionne.

Merci de m'indiquer comment faire le lien entre les deux script.... si lien on peut faire... mais je suppose que oui, tout est possible en informatique.

Merci encore pour le temps passé.....
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés